/*	This file is part of LSAC.

	LSAC is free software: you can redistribute it and/or modify
	it under the terms of the GNU General Public License as published by
	the Free Software Foundation, either version 3 of the License, or
	(at your option) any later version.

	LSAC is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	GNU General Public License for more details.

	You should have received a copy of the GNU General Public License
	along with LSAC.  If not, see <http://www.gnu.org/licenses/>.

	Copyright (c) 2010 LEPESME "Jiboo" Jean-Baptiste
*/

#pragma once

#include <string>
#include <iostream>
#include <boost/regex.hpp>
using namespace std;
using namespace boost;

#include "cLocation.h"

class cToken
{
public:
	cLocation dLocation;
	string dValue;

	cToken(cLocation pLocation, string pValue);
	cToken(unsigned int pLine, unsigned int pColumn, char pChar);
	~cToken();

	void addChar(char pChar);
	bool operator==(string pCmp);
	bool operator!=(string pCmp);

	bool match(regex &pRegex);

	int toInt();
	bool toBool();
};

ostream& operator<<(ostream& o, const cToken& pToken);
ostream& operator<<(ostream& o, const cToken* pToken);
